package com.relytosoft.mizar.media.analyze.api.entity.structure;

/**
 * AyStructureTask
 *
 * @Author SunLi
 * @Date: 2022/5/31 16:28
 * @Version 1.0
 */

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.relytosoft.dubhe.common.core.base.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

/**
 * @Author: zyc
 * @version: v1.0
 * @Date: 2022/5/12 16:22
 */

@TableName("AY_STRUCTURE_TASK")
@ApiModel("AyStructureTask")
public class AyStructureTask extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty(value = "主键")
    @TableId(value="ID", type= IdType.AUTO)
    private Integer id;

    /**
     * 任务名称
     */
    @ApiModelProperty(value = "任务名称", required = true)
    @TableField("NAME")
    @NotBlank(message = "任务名称不能为空")
    private String name;

    /**
     * 任务类型;1：实时任务，2：离线视频任务，3：离线文件任务
     */
    @ApiModelProperty(value = "任务类型;1：实时任务，2：离线视频任务，3：离线文件任务", required = true)
    @TableField("TYPE")
    @NotNull(message = "任务类型不能为空")
    private Integer type;

    /**
     * 占用资源（路）
     */
    @ApiModelProperty(value = "占用资源（路）")
    @TableField("LICENCE_USING")
    private Integer licenceUsing;

    /**
     * 任务开始时间;(实时任务、离线视频任务)
     */
    @ApiModelProperty(value = "任务开始时间;(实时任务、离线视频任务)")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("BEGIN_TIME")
    private LocalDateTime beginTime;

    /**
     * 任务结束时间;(实时任务、离线视频任务)
     */
    @ApiModelProperty(value = "任务结束时间;(实时任务、离线视频任务)")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("END_TIME")
    private LocalDateTime endTime;

    /**
     * 离线视频文件视频总时长
     */
    @ApiModelProperty(value = "离线视频文件视频总时长")
    @TableField("VIDEO_TOTAL_TIME")
    private String videoTotalTime;

    /**
     * 视频处理总时长
     */
    @ApiModelProperty(value = "视频处理总时长")
    @TableField("HANDLE_TOTAL_TIME")
    private String handleTotalTime;

    /**
     * 离线视频文件文件大小;单位：mb
     */
    @ApiModelProperty(value = "离线视频文件文件大小;单位：mb")
    @TableField("FILE_SIZE")
    private Double fileSize;

    /**
     * 录像区间开始时间
     */
    @ApiModelProperty(value = "录像区间开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("RECORD_BEGIN_TIME")
    private LocalDateTime recordBeginTime;

    /**
     * 录像区间结束时间
     */
    @ApiModelProperty(value = "录像区间结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("RECORD_END_TIME")
    private LocalDateTime recordEndTime;

    /**
     * 进程数，即录像视频对应的拆分数
     */
    @ApiModelProperty(value = "进程数，即录像视频对应的拆分数")
    @TableField("PROGRESS")
    private Integer progress;

    /**
     * 状态 -1-未启动，0-创建中，1-运行中，2-已结束，3-异常
     */
    @ApiModelProperty(value = "状态;-1-未启动，0-创建中，1-运行中，2-已结束，3-异常", required = true)
    @TableField("STATUS")
    @NotNull(message = "状态不能为空")
    private Integer status;

    /**
     * 删除标记;0：否，1：是
     */
    @ApiModelProperty(value = "删除标记;0：否，1：是")
    @TableField("IS_DELETED")
    private Integer isDeleted;

    /**
     * 任务状态异常原因
     */
    @ApiModelProperty(value = "任务状态异常原因")
    @TableField("ERROR_REASON")
    private String errorReason;

    /**
     * 是否启动成功过;0：否，1：是
     */
    @ApiModelProperty(value = "是否启动成功过;0：否，1：是")
    @TableField("IS_START_UP")
    private Integer isStartUp;

    /**
     * 防止并发状态重复启动;1 正在启动 0 可以启动
     */
    @ApiModelProperty(value = "防止并发状态重复启动;1 正在启动 0 可以启动")
    @TableField("IS_STARTING")
    private Integer isStarting;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @TableField("REMARK")
    private String remark;

    /**
     * 获得主键
     */
    public Integer getId(){
        return this.id;
    }
    /**
     * 设置主键
     */
    public void setId(Integer id){
        this.id = id;
    }

    /**
     * 获得任务名称
     */
    public String getName(){
        return this.name;
    }
    /**
     * 设置任务名称
     */
    public void setName(String name){
        this.name = name;
    }

    /**
     * 获得任务类型;1：实时任务，2：离线视频任务，3：离线文件任务
     */
    public Integer getType(){
        return this.type;
    }
    /**
     * 设置任务类型;1：实时任务，2：离线视频任务，3：离线文件任务
     */
    public void setType(Integer type){
        this.type = type;
    }

    /**
     * 获得占用资源（路）
     */
    public Integer getLicenceUsing(){
        return this.licenceUsing;
    }
    /**
     * 设置占用资源（路）
     */
    public void setLicenceUsing(Integer licenceUsing){
        this.licenceUsing = licenceUsing;
    }

    /**
     * 获得任务开始时间;(实时任务、离线视频任务)
     */
    public LocalDateTime getBeginTime(){
        return this.beginTime;
    }
    /**
     * 设置任务开始时间;(实时任务、离线视频任务)
     */
    public void setBeginTime(LocalDateTime beginTime){
        this.beginTime = beginTime;
    }

    /**
     * 获得任务结束时间;(实时任务、离线视频任务)
     */
    public LocalDateTime getEndTime(){
        return this.endTime;
    }
    /**
     * 设置任务结束时间;(实时任务、离线视频任务)
     */
    public void setEndTime(LocalDateTime endTime){
        this.endTime = endTime;
    }

    /**
     * 获得离线视频文件视频总时长
     */
    public String getVideoTotalTime(){
        return this.videoTotalTime;
    }
    /**
     * 设置离线视频文件视频总时长
     */
    public void setVideoTotalTime(String videoTotalTime){
        this.videoTotalTime = videoTotalTime;
    }

    /**
     * 获得视频处理总时长
     */
    public String getHandleTotalTime(){
        return this.handleTotalTime;
    }
    /**
     * 设置视频处理总时长
     */
    public void setHandleTotalTime(String handleTotalTime){
        this.handleTotalTime = handleTotalTime;
    }

    /**
     * 获得离线视频文件文件大小;单位：mb
     */
    public Double getFileSize(){
        return this.fileSize;
    }
    /**
     * 设置离线视频文件文件大小;单位：mb
     */
    public void setFileSize(Double fileSize){
        this.fileSize = fileSize;
    }

    /**
     * 获得录像区间开始时间
     */
    public LocalDateTime getRecordBeginTime(){
        return this.recordBeginTime;
    }
    /**
     * 设置录像区间开始时间
     */
    public void setRecordBeginTime(LocalDateTime recordBeginTime){
        this.recordBeginTime = recordBeginTime;
    }

    /**
     * 获得录像区间结束时间
     */
    public LocalDateTime getRecordEndTime(){
        return this.recordEndTime;
    }
    /**
     * 设置录像区间结束时间
     */
    public void setRecordEndTime(LocalDateTime recordEndTime){
        this.recordEndTime = recordEndTime;
    }

    /**
     * 获得进程数，即录像视频对应的拆分数
     */
    public Integer getProgress(){
        return this.progress;
    }
    /**
     * 设置进程数，即录像视频对应的拆分数
     */
    public void setProgress(Integer progress){
        this.progress = progress;
    }

    /**
     * 获得状态
     */
    public Integer getStatus(){
        return this.status;
    }
    /**
     * 设置状态
     */
    public void setStatus(Integer status){
        this.status = status;
    }

    /**
     * 获得删除标记;0：否，1：是
     */
    public Integer getIsDeleted(){
        return this.isDeleted;
    }
    /**
     * 设置删除标记;0：否，1：是
     */
    public void setIsDeleted(Integer isDeleted){
        this.isDeleted = isDeleted;
    }

    /**
     * 获得任务状态异常原因
     */
    public String getErrorReason(){
        return this.errorReason;
    }
    /**
     * 设置任务状态异常原因
     */
    public void setErrorReason(String errorReason){
        this.errorReason = errorReason;
    }

    /**
     * 获得是否启动成功过;0：否，1：是
     */
    public Integer getIsStartUp(){
        return this.isStartUp;
    }
    /**
     * 设置是否启动成功过;0：否，1：是
     */
    public void setIsStartUp(Integer isStartUp){
        this.isStartUp = isStartUp;
    }

    /**
     * 获得防止并发状态重复启动;1 正在启动 0 可以启动
     */
    public Integer getIsStarting(){
        return this.isStarting;
    }
    /**
     * 设置防止并发状态重复启动;1 正在启动 0 可以启动
     */
    public void setIsStarting(Integer isStarting){
        this.isStarting = isStarting;
    }

    /**
     * 获得备注
     */
    public String getRemark(){
        return this.remark;
    }
    /**
     * 设置备注
     */
    public void setRemark(String remark){
        this.remark = remark;
    }

    @Override
    public String toString() {
        return "AyStructureTask{id="+id+
                ",name="+name+
                ",type="+type+
                ",licenceUsing="+licenceUsing+
                ",beginTime="+beginTime+
                ",endTime="+endTime+
                ",videoTotalTime="+videoTotalTime+
                ",handleTotalTime="+handleTotalTime+
                ",fileSize="+fileSize+
                ",recordBeginTime="+recordBeginTime+
                ",recordEndTime="+recordEndTime+
                ",progress="+progress+
                ",status="+status+
                ",isDeleted="+isDeleted+
                ",errorReason="+errorReason+
                ",isStartUp="+isStartUp+
                ",isStarting="+isStarting+
                ",remark="+remark+
                ",createdId="+createdId+
                ",createdBy="+createdBy+
                ",createdTime="+createdTime+
                ",updatedId="+updatedId+
                ",updatedBy="+updatedBy+
                ",updatedTime="+updatedTime+
                "}";
    }
}
